import java.util.LinkedList;
import java.util.Queue;

class MyStackUseQueue {
    public Queue<Integer> qu1;  //构建一个队列
    public Queue<Integer> qu2;
    public MyStackUseQueue(){
        qu1 =new LinkedList<>();
        qu2 =new LinkedList<>();
    }
    //向栈中压入数据
    public void push(int x){
        if (!qu1.isEmpty()){  //如果队列1不为空，则放入队列1中
            qu1.offer(x);
        } else if (!qu2.isEmpty()) {
            qu2.offer(x);  //如果队列1为空，队列2不为空，则放入队列2中
        }else {
            qu1.offer(x);
        }
    }

    public int pop() {
        if (empty()) {
            return -1;
        }
        if (!qu1.isEmpty()) {  //如果qu1有元素
            int size = qu1.size();
            for (int i = 0; i < size - 1; i++) {  //遍历到最后一个的所有元素
                int val = qu1.poll();
                qu2.offer(val);  //将qu1的元素放入到qu2中
            }
            return qu1.poll();  //最后一个元素就是栈顶元素
        } else {
            int size = qu2.size();  //如果qu2有元素
            for (int i = 0; i < size - 1; i++) {
                int val = qu2.poll();
                qu2.offer(val);  //将qu2的元素放入到qu1中
            }
            return qu2.poll();  //最后一个元素就是栈顶元素
        }
    }

    public int top(){
        if (empty()){  //如果栈为空
            return -1;  //没找到则返回-1
        }
        if (!qu1.isEmpty()){  //如果qu1不为空，即qu1有元素
            int size = qu1.size();
            int val = -1;
            for (int i=0;i<size;i++){
                val = qu1.poll();
                qu2.offer(val);
            }
            return val;
        }else {
            int size = qu2.size();
            int val = -1;
            for (int i=0;i<size-1;i++){
                val = qu2.poll();
                qu2.offer(val);
            }
            return val;
        }
    }

    public boolean empty(){
        return qu1.isEmpty() && qu2.isEmpty();
    }
}
